#ifndef _CODECS_H_
#define _CODECS_H_

#define PCMA 		8
#define PCMU 		0
#define SPEEX		110
#define H261 		31
#define H263_1996 	34
#define H263_1998 	103
#define MPEG4 		104
#define H264 		99

class VideoEncoder
{
public:
	virtual ~VideoEncoder(){};

	virtual int SetSize(int width,int height)=0;
	virtual int EncodeFrame(BYTE *in,DWORD len)=0;
	virtual int GetNextPacket(BYTE *out,DWORD &len)=0;
	virtual int FastPictureUpdate()=0;
	virtual int SetFrameRate(int fps,int kbits)=0;
public:
	int type;
};

class VideoDecoder
{
public:
	virtual ~VideoDecoder(){};

	virtual int GetWidth()=0;
	virtual int GetHeight()=0;

	virtual int DecodePacket(BYTE *in,DWORD len,int lost,int last)=0;
	virtual BYTE* GetFrame()=0;
public:
	int type;

};

#endif
